#include <algorithm>
#include <cstdio>
#include <cstring>
#include <functional>
#include <iostream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <unordered_set>
#include <vector>

#define lld long long // long long 的printf 占位符是lld
#define ENDL '\n'     // 将 endl 替换为 \n 取消缓冲区
#define mod %
const lld MOD_N = 1e9 + 7;
const lld MAX_ = 1e9;

using std::cin;
using std::cout;
using std::priority_queue;
using std::queue;
using std::set;
using std::stack;
using std::string;
using std::unordered_set;
using std::vector;

void cal(vector<lld> a, unordered_set<lld> &results) {
  // body
  int n = a.size();
  if (n == 0) {
    return;
  }

  // 二进制位来枚举所有可能的加减组合
  // 等号有n-1个位置
  for (int i = 0; i < (1 << (n - 1)); ++i) {
    int sum = a[0];
    /*
      从第二个数开始
      检查i的每一位 0 减法,1加法
      101 +a1 -a2 +a3
      010 -a1 +a2 -a3
    */
    for (int j = 1; j < n; ++j) {
      // 检查 i 的第 j-1 位是否为 1
      if (i & (1 << (j - 1)))
        sum += a[j];
      else
        sum -= a[j];
    }
    results.insert(sum);
  }
}
bool check(vector<int> a) {
  int n = a.size();
  for (int pos_eq = 1; pos_eq < n; ++pos_eq) {
    // 枚举等号位置 一共 n-1 个
    //               pos=4
    // a1 a2 a3  a4    =   a5 a6 a7 a8
    // left 从a1到 a4
    // right a5 to a8

    vector<lld> left(a.begin(), a.begin() + pos_eq);
    vector<lld> right(a.begin() + pos_eq, a.end());

    unordered_set<lld> left_sum, right_sum;
    cal(left, left_sum);
    cal(right, right_sum);
    for (int sum : left_sum) {
      if (right_sum.count(sum) >= 1) {
        return true;
      }
    }
  }
  return false;
}
void solve() {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
  }
  if (check(a)) {
    cout << "Yes" << ENDL;
  } else {
    cout << "No" << ENDL;
  }
}
int main() {
  int T;
  cin >> T;
  while (T--) {
    solve();
  }
  return 0;
}